/*注意事项：
1. qml支持的qt数据类型主要有：基本类如string，int，float，bool等，还有QList，等同于qml的Array，还有QVariantMap，等同于qml的object，不支持二进制数据;
2. 关于重载，虽然理论上重载函数给qml调用不会有问题，但是因为qml里面有数据类型自动转换，真正传入到C++的参数可能会发生变化，所以建议尽量不要使用重载
*/
#ifndef DBINTERFACE_H
#define DBINTERFACE_H
#include <QtCore>
//#include <QtGui>

class example
{
public:
    example();

public slots:
    /*画折线图需要的数据函数
    输入参数：chartType是报表类型，即年收入，年支出，月支出
    datatype是指可能指定某种特定支出/收入类型，如支出中的生活消费，收入中的工资收入，默认为所有
    timeStart和timeEnd就是开始结束日期
    另外有什么参数可能需要的，加上去就行了，函数名我也随便，下同*/
    QList<QVariantMap> dbDataForLineChart(int chartType, int dataType, QString timeStart, QString timeEnd);

    /*画饼图的数据函数
    chartType是也就是支出和收入，特定类型这里就不用了，因为就是要显示所有类型的
    时间参数同上*/
    QList<QVariantMap> dbDataForPieChart(int chartType, QString timeStart, QString timeEnd);

    /*历史记录查询
    显示时间段内所有记录，包括支出和收入
    注：返回值必须要包含数据库每个值的id，因为可能要修改某一条记录的*/
    QList<QVariantMap> dbDataForHistory(QString timeStart, QString timeEnd);

    /*数据库查询
    好像我不需要查询单条记录，先写着吧，以后可能会用到
    不知道要什么参数，呃。。*/
    QList<QVariantMap> dbDataSelect(/*QString timeStart, QString timeEnd*/);

    /*插入，更新，另外删除应该不需要;
    数据类型
    datatype指某种特定支出/收入类型；
    amount即金额
    时间的话看情况而定，新建的话直接用当前系统时间就可以了，更新的话应该是不需要修改时间*/
    bool dbDataNew(int dataType, float amount);
    bool dbDataUpdate(int dataType, float amount);

    /*清楚数据库所有收入和支出记录，测试用
    */
    bool dbDataClear();
};

#endif // DBINTERFACE_H
